[PR]結婚の悩みって多いょ!占う?:よく当たる願いが叶う占いって評判ダョ♪


前のページ   後のページ   目次へ

********************************

       ■■■■
     ■    ■       ■        ■
     ■           ■■■      ■■■
     ■    ■       ■        ■
       ■■■■
               〜基礎から ★ C++Programing〜
********************************

  【注意】 このマガジンは、最大化してお読みください。
       また、等角フォントでお読みください。
          (MS ゴシックなど)

********************************

 発行者      むーくん
 マガジンNO.  24(2−7)
 発行日      2000/12/11
 講読人数     2000名ぐらい
 マガジンID   0000050494
          このマガジンは、まぐまぐから配信されています。
********************************
★あいさつ★

クリスマスネタ。
自分を表した言葉。
あわてんぼうのサンタクロース♪・・・

ああ・・・精密な頭脳がほしい!!よく間違えて済みません・・・
********************************
★目次★

・訂正
・解答例
・思わぬ落とし穴
・型キャスト
・予告
********************************
★訂正★

また失礼しました。重大です。

「たくさんのオペランドがあったら(1)」
の所で、「20+5+10+1」は、「20+5+5+1」の間違いです。
問題を差し替えたら後ろがずれてました。
混乱された方、ごめんなさい!!

  まず、「20+5」が評価されます。
  これは、「25」になりますよね。

  すると式は、こうなります。 a  = 25+5+1;
  今度は、「25+5」が評価されます。
  「30」になります。

  最後に、「30+1」が評価され、最終的に「31」となります。

  つまり、式は、「a = (((20+5)+5)+1);」
  と同じになります。

********************************
★解答例★
必要部分だけ書いた方は、それで構いません。

(1)底辺が3cm、高さが8cmの三角形の面積。

#include<iostream.h>

int main(void){
    double l, h, s;

    l = 3;
    h = 8;
    s = l * h / 2;
    cout << "面積は、" << s << "cm^2です。" << endl; 
    return 0;
}

(2)半径2cmの円の円周の長さ。

#include<iostream.h>

int main(void){
    double r, pi, l;

    r = 2;
    pi = 3.1415926535;
    l = 2 * pi * r;
    cout << "円周の長さは、" << l << "cm^2です。" << endl; 
    return 0;
}

(3)国語47点、数学34点、英語84点、社会72点、理科100点。
   点数の合計と、平均値。

#include<iostream.h>

int main(void){
    int japanese, math, english, society, science;
    double average;

    japanese = 47;
    math = 34;
    english = 84;
    society = 72;
    science = 100;
    average = (japanese + math + english + society + science) / 5.0;
     cout << "平均点は、" << average << "点です。" << endl; 
    return 0;
}

注:最後から3行目で、「/ 5.0」となっています。
  「/ 5」だとどうなるか、試してみてください。


(4)21 % 8 はいくつになりますか。
    21÷8=2余り5
    よって、5になります。

********************************
★思わぬ落とし穴★

上の(3)の注にも書いてありますが、「5.0」と「5」の違いは
何でしょう。

実は、定数にも、型があるのです。

「5.0」は、小数点以下があるので、「浮動小数点」、
「5」は、「整数」として扱われます。

何に影響するのでしょうか?

実は、演算結果の型というのは、オペランドの中で、一番精度が高い
ものが使われます。

要するに、「整数・整数」の演算結果は「整数」、
「整数・浮動小数点」の演算結果は、「浮動小数点」になります。


(3)の話では、つまりこういうことです。
japanese, math, english, society, scienceという5つの変数は、「整数」
です。
この5つの演算結果は、「整数」となります。

これを割るオペランド(つまり「5」や、「5.0」)が、
「整数」ならば、結果は「整数」に、
「浮動小数点」ならば、結果は「浮動小数点」になります。

「整数」では、小数点以下が切り捨てられてしまいます。
実際の計算では、この切り捨てによって、バグが潜む可能性がでてくる
ので、十分に注意しましょう。

********************************
★型キャスト★

標準では、上のように自動的に精度の高い方に合わされますが、
無理矢理自分で変えることもできます。
その方法が、「型キャスト」です。

これは、コンパイラへの型のごまかしで、多用すべきではありません。

でも、C++では、よく使われる手法なので、紹介しておきます。


例:(3)は、以下のように書くこともできます。

average = (double)(japanese + math + english + society + science) / 5;
点数の合計を、浮動小数点にキャストしています。

average = (japanese + math + english + society + science) / (double)5;
「5」を、浮動小数点にキャストしています。

average = ((double)japanese + math + english + society + science) / 5;
「japanese」を、浮動小数点にキャストしています。

どれでもOKです。なぜなら、どれか一つでも、浮動小数点にキャスト
されれば、あとは自動型変換が効くからです。


キャストは、キャストしたいオペランドの前に、括弧付きの型名を
書けばいいです。
左辺値は、キャストできないので注意してください。

********************************
★用語説明★

定数
  変えることのできない値のこと。
  例えば、変数は、中身を変えることができます。
  でも、「20」は、「20」以外の何者でもありませんよね。

左辺値
  代入式の左の値のこと。
  基本的に、変数しか置くことができません。
********************************
★予告★

コメントについて
********************************


講読解除はこちら

http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html

バックナンバーはこちら
http://members.tripod.co.jp/mukun_mmg/mmg/cpp.html

内容について質問やご意見など
smukun@hotmail.com

筆者のWebサイト(むーくんの理学的なんでも講座)
http://members.tripod.co.jp/mukun_mmg/

************************************

前のページ   後のページ   目次へ

[PR]結婚の悩みって多いょ!占う?:よく当たる願いが叶う占いって評判ダョ♪